#!/bin/bash

COMMAND="$1"
KERNEL_VERSION="$2"
BOOT_DIR_ABS="$3"
KERNEL_IMAGE="$4"

# skip if systemd-boot is used
[ "$KERNEL_INSTALL_LAYOUT" = "bls" ] && exit 0

if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
  exit 0
fi

MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID

# with grub2 always /boot
BOOT_ROOT="/boot"
LOADER_ENTRIES="$BOOT_ROOT/loader/entries"

[ -d "$LOADER_ENTRIES" ] || exit 0

[ "$COMMAND" = "add" ] || exit 0

ARCH=`uname -m`

pushd "$LOADER_ENTRIES" &> /dev/null
for f in `basename "$MACHINE_ID"`-*.conf; do
  # Skip non-files and rescue entries
  if [ ! -f "$f" -o "${f: -12}" == "-rescue.conf" ]; then
    continue
  fi
  # Skip boom managed entries
  if [[ "$f" =~ \w*-[0-9a-f]{7,}-.*-.*.conf ]]; then
    continue
  fi

  if grep -q '\(\s*grub_\)\|\($grub\)' "$f" && [ "${ARCH:0:4}" != "s390" ]; then
    # grub generated BLS entries detected and not on s390(x) where zipl is used,
    # there is high chance that variables in BLS entries will be supported (grub
    # extension is unsupported by zipl)
    grep -q '^\s*options\s\+.*\$tuned_params' "$f" || sed -i '/^\s*options\s\+/ s/\(.*\)/\1 \$tuned_params/' "$f"
    grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" || sed -i '/^\s*initrd\s\+/ s/\(.*\)/\1 \$tuned_initrd/' "$f"
  else
    # BLS entries generated by some unsupported tool or on s390x, unpatch TuneD
    # variables which could be there from the previous TuneD versions
    grep -q '^\s*options\s\+.*\$tuned_params' "$f" && sed -i '/^\s*options\s\+/ s/\s\+\$tuned_params\b//g' "$f"
    grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" && sed -i '/^\s*initrd\s\+/ s/\s\+\$tuned_initrd\b//g' "$f"
  fi
done
popd &> /dev/null

exit 0
